""""
自定义页面
---
    dict={'number':'15607170730','id':3}
    qs=models.TelNumber.objects.filter(**dict)
    qs=models.TelNumber.objects.filter(number='15607170730',id=3)
    print(qs)
    for obj in qs:
        print(obj.price)

    字符串筛选 以。。。开头/结尾/包含
    models.TelNumber.objects.filter(number='730')
    models.TelNumber.objects.filter(number__endswith='730')
    models.TelNumber.objects.filter(number__startswith='730')
    models.TelNumber.objects.filter(number__contains='730')
    dict={'number_endswith':'666'}
    models.TelNumber.objects.filter(**dict)

    测试分页  生成100条数据
    for i in range(99):
        models.TelNumber.objects.create(number='15812345678',price='10',level='7',status='1')

    空字典 从url中得到tel的值(tel 从 html传过来 )。判断，有的话字典增加dict['number__contains']=value，没有返回的是空字典，空字典查全部

    #分页
    # page=int(request.GET.get('page',1))#1为默认值
    #   / -->  url影响了     path('telnumber/',app_test02.views.telnumber)          http://127.0.0.1:8000/telnumber/?page=2
    # pagesize=10 # 页面条数
    # start=(page-1)*pagesize
    # end=(page)*pagesize

    # queryset=models.TelNumber.objects.filter(**dict)[page_obj.start:page_obj.end]
    # 总数据条数
    # page_count=models.TelNumber.objects.filter(**dict).count()
    # print( page_count,flush=True) # 需要强制 才能打印
"""
#mark_safe 包裹html标签  表示安全  才能够在前端显示
from django.utils.safestring import mark_safe

class pagination():

    def __init__(self,request,queryset,page_get='page',pagesize=10,n=5):
        page=int(request.GET.get(page_get,1))#1为默认值
        self.page=page

        self.pagesize=pagesize # 页面条数
        self.start=(page-1)*pagesize
        self.end=(page)*pagesize
        self.page_queryset = queryset[self.start,self.end]

        self.page_count=queryset.count()

        #div为余数
        div_page,div=divmod(self.page_count,self.pagesize)
        if div:
            # 总页码数
            div_page+=1
        self.div_page=div_page
        #计算，只显示前后n页
        self.n=2

    def html(self):
        '''
        # 翻页为负数 这个逻辑在视频里讲的很复杂，需要分情况判断。可直接跳过
        if div_page<=n*2+1:
            start_page=1
            end_page=div_page+1
        else:
            if page<=n:
                start_page=1
                end_page=2*n+1+1
            else:
                start_page=page-n
                end_page=page+n+1
        '''
        start_page=self.page-self.n
        end_page=self.page+self.n+1
        #页码
        dic_page=[]
        pre='<li><a href="?page={}">上一页</a></li>'.format(self.page-1)
        dic_page.append(pre)
        # <li><a href="#">1</a></li>
        # for i in range(1,div_page+1): # 左闭右开，所以要＋1
        for i in range(start_page,end_page):
            if i==self.page:
                # str.format()
                fy='<li class="active"><a href="?page={}">{}</a></li>'.format(i,i)
            else:
                fy='<li><a href="?page={}">{}</a></li>'.format(i,i)
            dic_page.append(fy)
            #mark_safe 包裹html标签  表示安全  才能够在前端显示
        nextpage='<li><a href="?page={}">下一页</a></li>'.format(self.page+1)
        dic_page.append(nextpage)
        dic_pagejoin=mark_safe(''.join(dic_page))

        return dic_pagejoin